import { useStorage } from '@uni-helper/uni-use'
import { createGlobalState } from '@vueuse/core'
import mitt from 'mitt'

/**
 * 应用配置
 */
let appEnv: ImportMetaEnv | undefined

/**
 * 获取应用配置
 * @returns {ImportMetaEnv} 应用配置
 */
export function useAppEnv(): ImportMetaEnv {
  if (appEnv) {
    return appEnv
  }
  appEnv = import.meta.env as ImportMetaEnv
  return appEnv
}

/**
 * Token 持久化存储的 key
 */
export const AUTHORIZATION_KEY = '__APP_AUTHORIZATION__'

/**
 * Token 名称
 */
export const TOKEN_NAME = 'Authorization'

/**
 * Token 持久化存储
 */
export const useAuthorization = createGlobalState(() => useStorage<string | null>(AUTHORIZATION_KEY, null))

/**
 * 全局事件管理器
 */
const emitter = mitt()

/**
 * 全局事件管理器
 */
export function useEmitter() {
  return emitter
}
